'''
字典 :是一系列键—值对 。每个键 都与一个值相关联，你可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。
字典用放在花括号{} 中的一系列键—值对表示
键—值 对是两个相关联的值。指定键时，Python将返回与之相关联的值。键和值之间用冒号分隔，而键—值对之间用逗号分隔。
'''
dict_1 = {'张三': 18, '李四': 16, '王五': 20}  # 定义一个字典，里面有三个键值对
print(dict_1['张三'])  ### 18
dict_1['刘六'] = 19  # 可以直接像这样往字典里面添加键值对
print(dict_1)
### {'张三': 18, '李四': 16, '王五': 20, '刘六': 19}

dict_1['张三'] = 20  # 字典可以用这中方式修改里面的内容
print(dict_1)
### {'张三': 20, '李四': 16, '王五': 20, '刘六': 19}

'''
如果要遍历字典中的值或键，可以用values()和keys()方法去遍历
values()方法可以返回一个包含字典中所有值的列表
keys()方法可以返回一个包含字典中所有键的列表
如果要遍历则用for循环
'''
print(dict_1.values())  ### dict_values([18, 16, 20, 19])
print(dict_1.keys())  ### dict_keys(['张三', '李四', '王五', '刘六'])

for name in dict_1.keys():  # 遍历字典中的键，遍历值类似
    print(name, end=' ')
### 张三 李四 王五 刘六

'''
嵌套
字典列表: 如果dict_1代表一个班的人，那么在现实中肯定不止一个班，因此可以创建一个班级列表，其中每个班级是一个列表
'''
dict_1 = {'张三': 18, '李四': 16, '王五': 20}
dict_2 = {'张三': 18, '李四': 16, '王五': 20}  # 我懒得想了，就用重复的
dict_3 = {'张三': 18, '李四': 16, '王五': 20}
class_1 = [dict_1, dict_2, dict_3]
for class1 in class_1:  # 用循环可以遍历里面的每个班级
    print(class1)
### {'张三': 18, '李四': 16, '王五': 20, '刘六': 19}
### {'张三': 18, '李四': 16, '王五': 20, '刘六': 19}
### {'张三': 18, '李四': 16, '王五': 20, '刘六': 19}

'''
同样，字典里面也能存储列表,例如，如果要向客户介绍你的披萨，但是列表，就只能存储披萨的配料，但是用字典，则可以存储披萨的其他信息
'''
dict_4 = {'配料': ['饼子', '萝卜', '菠萝'], 'size': ['小', '中', '大'], 'kinds': ['菠萝披萨', '萝卜披萨']}
# 向客户介绍披萨
print('本店的披萨主要有:', end='')
for kinds in dict_4['kinds']:
    print(kinds, end=',')
print('大小分别有:', end='')
for size in dict_4['size']:
    print(size, end=',')
### 本店的披萨主要有:菠萝披萨,萝卜披萨,大小分别有:小,中,大,

'''
字典中也可以存储字典，例如，如果有多个网站用户，每个都有独特的用户名，可在字典中将用户名作为键，然后将每位用户的信息存储在
一个字典中，并将该字典作为与用户名相关联的值。
'''
dict_5 = {
    'user1': {
        'name': '张三',
        'age': 18,
        'local': 'China'
    },
    'user2': {
        'name': '李四',
        'age': 20,
        'local': 'US'
    }
}
print(f'用户user1的信息:{dict_5["user1"]}')
### 用户user1的信息:{'name': '张三', 'age': 18, 'local': 'China'}
for user, user_information in dict_5.items():
    print(f'用户{user}的信息:\n姓名:{user_information["name"]}\n年龄:{user_information["age"]}'
          f'\n地区:{user_information["local"]}')
### 用户user1的信息:
### 姓名:张三
### 年龄:18
### 地区:China
### 用户user2的信息:
### 姓名:李四
### 年龄:20
### 地区:US
